There has been a proliferation in the use of mobile devices with increasing processing capabilities, such as smart phones, tablet computers, etc. Applications running on the mobile devices have also increased in their capability and sophistication. Many of the applications that once ran on computers are increasingly finding their way into mobile devices. Many new applications have also been developed to run on the mobile devices and many new features introduced to take advantage of their mobility. Mobile devices are also increasingly being used to run critical applications that cannot afford to experience any downtime. However, due to limitations on mobile devices, such as memory capacity, battery power, and processor speed, mobile applications may not always function properly or at all during various times of desired use. In addition, because of their mobility, mobile devices are susceptible to adverse operating conditions such as poor signal levels and limited data bandwidth. Accordingly, there is a need to create a more robust environment for the mobile devices to ensure that they may operate effectively, efficiently, and ubiquitously.